
def get_matrix(n): #n是行数
    matrix = []
    for i in range(n):
        line=[float(item) for item in input().strip().split()]
        matrix.append(line)
    return matrix

def get_vector():
    return [float(item) for item in input().strip().split()]

def dot_product(vector1, vector2): #向量的点乘 只接受长度相等的两个行向量
    return sum([i * j for i,j in zip(vector1, vector2)]) #一行至简

def cross_product(matrix1, matrix2):
    row,col=len(matrix1),len(matrix2[0])
    matrix = [[0 for j in range(col)] for i in range(row)] #全零矩阵
    for i in range(row): #第一个的行数
        for j in range(col): #第二个的列数
            matrix[i][j]=dot_product(matrix1[i],[matrix2[k][j] for k in range(len(matrix2))])
    return matrix

#矩阵A 初始向量u 误差上限e 最大迭代次数N
def pim(A,u,e,N):#乘幂法
    cnt=0 #当前迭代次数
    last_u=[]
    last_lb=0
    lb=0
    while cnt<N :
        last_u=u
        last_lb=lb
        u=cross_product(A,[[item] for item in u])
        u=[line[0] for line in u]
        #print(u)

        lb=dot_product(u,last_u)/dot_product(last_u,last_u)
        u = [item / max(u) for item in u]  # 规范化 必须在计算lb之后 否则引起的误差会导致答案偏差很大
        #lb=dot_product(cross_product(A,[[item] for item in u]),u)/dot_product(u,u)
        if cnt != 1 and abs(lb-last_lb)<=e:
            break
        cnt+=1
    return last_u,lb,cnt


if __name__ == '__main__':
    A=get_matrix(3)
    y=get_vector()
    e,N=input().strip().split()
    e,N=float(e),int(N)
    u,lb,cnt=pim(A,y,e,N)


    print("%.6f %.6f %.6f"% tuple(u))

    print("%.6f\n%d"%(lb,cnt))
